Verilog-A 模拟算子(Analog Operators)

与模拟信号相关的运算函数。使用限制严格:

时间相关函数

limexp —— 有限指数

limexp(expr);
analog begin
    idio = IS * (limexp(V(a,c)/$vt) - 1);
    I(a,c) <+ idio;
end

ddt —— 时间微分

ddt(expr [, abstol]);
V(out) <+ ddt(ddt(V(in)));   // ❌ 错误

需要中间节点:

electrical internal_node;
V(internal_node) <+ ddt(V(in));
V(out) <+ ddt(V(internal_node));   // ✅ 二次微分

idt —— 时间积分

idt(expr [, ic [, assert [, abstol]]]);

idtmod —— 循环积分

idtmod(expr [, ic [, modules [, offset [, abstol]]]]);
phase = idtmod(fc + gain*V(in), 0, 1, 0);
V(OUT) <+ sin(2*`M_PI*phase);

信号微分

ddx —— 偏微分

ddx(exprA, exprB);

延时与滤波

absdelay —— 绝对延时

absdelay(expr, time_delay [, max_delay]);

transition —— 瞬态(边沿)滤波器

transition(expr [, delay [, rise_time [, fall_time [, time_tol]]]]);

slew —— 摆率限制

slew(expr [, max_pos_rate [, max_neg_rate]]);

拉普拉斯变换(S 域)函数

定义电路频率响应/滤波。修改参数在仿真中无效(仿真开始即确定滤波器形式)。最后一个参数 ep 为绝对值容差(视仿真器)。

函数 形式 说明
laplace_nd laplace_nd(expr, nn, dd [, ep]) 分子分母系数数组(0 阶→n 阶)
laplace_zp laplace_zp(expr, zeta, rho [, ep]) 零点/极点数组(实部,虚部 成对)
laplace_zd laplace_zd(expr, zeta, d [, ep]) 零点数组 + 分母系数数组
laplace_np laplace_np(expr, n, rho [, ep]) 分子系数数组 + 极点数组

示例(等效两种写法):

// H(s) = s / (s² - 0.4s + 0.2)
V(out) <+ laplace_zp(V(in), {0,0}, {1,2,1,-2});
V(out) <+ laplace_nd(V(in), {0,1}, {1,-0.4,0.2});

滤波器应用示例(RLC 等效传递函数):

module filter2(in,out,gnd);
input in; electrical in;
output out; electrical out;
inout gnd; electrical gnd;
analog begin
    V(out, gnd) <+ laplace_nd(V(in, gnd), {3.948e15,0,0}, {3.948e15,8.886e7,1});
end
endmodule

S 域模型与瞬态器件模型 AC/阶跃响应一致,但无 DC 工作点、大信号非线性与初始状态。建议:非线性特性用瞬态描述,线性小信号用 S 域函数。

Z 变换函数

离散时间用,均需要采样间隔 T。tor =采样边沿时间(0 会加不连续点、降速),t0 =首次采样时间;二者仿真开始时确定,运行中修改无效。

函数 说明
zi_zp(expr, zeta, rho, T [, tor [, t0]]) 零极点形式
zi_zd(expr, zeta, d, T [, tor [, t0]]) 零点 + 分母系数
zi_np(expr, n, rho, T [, tor [, t0]]) 分子系数 + 极点
zi_nd(expr, n, d, T [, tor [, t0]]) 分子分母系数

理想积分器示例(采样保持积分器):

V(out, gnd) <+ zi_nd(V(in, gnd), {0,1}, {1,-1}, 50u);

应用:ADC/DAC、开关电源采样建模。⚠️ 采样时钟应对齐输入稳定周期;边沿与采样点不对齐会采样到斜坡值产生误差。

模拟算子 vs 其他函数对比

函数 类型 静态仿真行为
ddt 时间微分 输出 0
idt/idtmod 时间积分 依 ic/assert 返回
absdelay 延时 信号不变
transition/slew 滤波 信号通过
laplace_* S 域滤波 频率响应
zi_* Z 域采样 离散
limexp 指数 同 exp 但收敛好

相关笔记